<?php
class ConvocatoriasController extends AppController {

	var $name = 'Convocatorias';
	var $helpers = array('Html', 'Form', 'Javascript', 'Ajax','Access');
	var $uses = array('Convocatoria', 'Departamento','User','Solicitude');

	function index(){
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}	
		
		$this->Convocatoria->recursive = 0;
		$convocatorias = $this->paginate('Convocatoria');		
		
		foreach( $convocatorias as $key=>$convocatoria ){
			$departamentos = split(',',$convocatoria['Convocatoria']['departamentos']);
			$nombres=""; $i=1; $size = count($departamentos);
			foreach ($departamentos as $departamento){
				$nombre = $this->Departamento->find('first',array('conditions'=>array('Departamento.id'=>$departamento)));
				$nombres.= ($i<$size)?$nombre['Departamento']['nombre'].", ":$nombre['Departamento']['nombre'];
				$i++;
			}			
			$convocatorias[$key]['departamentos']= $nombres;
			$solicitudes = $this->Solicitude->find('list',array('conditions'=>array('Solicitude.convocatoria_id'=>$convocatoria['Convocatoria']['id'])));
			$convocatorias[$key]['solicitudes']= count($solicitudes);
			
			$aprobadas = $this->Solicitude->find('list',array('conditions'=>array('Solicitude.convocatoria_id'=>$convocatoria['Convocatoria']['id'], 
												 'AND'=>array('Solicitude.estado_solicitud'=>'Aprobada'))));
			$convocatorias[$key]['aprobadas']= count($aprobadas);
			
			$rechazadas = $this->Solicitude->find('list',array('conditions'=>array('Solicitude.convocatoria_id'=>$convocatoria['Convocatoria']['id'], 
												 'AND'=>array('Solicitude.estado_solicitud'=>'Rechazada'))));
			$convocatorias[$key]['rechazadas']= count($rechazadas);
			unset($convocatoria);			
		}

		$this->set(compact('convocatorias'));
	}
	
	
	function publicaciones(){
		$this->Convocatoria->recursive = 0;
		$convocatorias = $this->paginate('Convocatoria',array('Convocatoria.estado'=>'Publicada'));		
		
		foreach( $convocatorias as $key=>$convocatoria ){
			$departamentos = split(',',$convocatoria['Convocatoria']['departamentos']);
			$nombres=""; $i=1; $size = count($departamentos);
			foreach ($departamentos as $departamento){
				$nombre = $this->Departamento->find('first',array('conditions'=>array('Departamento.id'=>$departamento)));
				$nombres.= ($i<$size)?$nombre['Departamento']['nombre'].", ":$nombre['Departamento']['nombre'];
				$i++;
			}			
			$convocatorias[$key]['departamentos']= $nombres;			
			unset($convocatoria);			
		}
		
		$usuario_activo = $this->Access->getMy('id');
		
		$this->set(compact('convocatorias', 'usuario_activo', 'grupo'));
	}
	

	function view($id = null){
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		
		if (!$id){
			$this->Session->setFlash(__('Invalid convocatoria', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('convocatoria', $this->Convocatoria->read(null, $id));
	}

	function add(){
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		
		if (!empty($this->data)){
			$form = $this->data;

			$departamentos = ""; $i=1;
			foreach ($form['Convocatoria']['departamentos'] as $departamento):
				$departamentos.=($i<count($form['Convocatoria']['departamentos']))?$departamento.", ":$departamento;
				$i++;
			endforeach;
			$form['Convocatoria']['departamentos'] = $departamentos;			
			
			$this->Convocatoria->create();
			if ($this->Convocatoria->save($form)){

				//Creacion de las solicitudes
				$usuarios_aprobadores = $this->User->find('all', array('conditions'=>array('User.aprobador'=>'1')));
				$correos = array();
				foreach ($usuarios_aprobadores as $aprobador):
					$registro['Solicitude']= array('convocatoria_id'=>$this->Convocatoria->id,'proyecto'=>$form['Convocatoria']['proyecto'],
												   'user_aprobador_id'=>$aprobador['User']['id'],'user_id'=>$this->Access->getMy('id'));
					$this->Solicitude->create();
					$this->Solicitude->save($registro);
					$correos[]= $aprobador['User']['correo'];
				endforeach;
				//Envio de los correos con las solicitudes con los datos de las convocatorias
				
				foreach ($correos as $correo):
				
					$nombre_correo = "Sistema de Convocatorias - CID";
					$desde = "sistemas@cid.org.co";
					$asunto = "Aprobacion de Convocatoria Creada";
					$header = "From: ". $nombre_correo . " <" . $desde . ">\r\n";
					$para = $correo;
					$contenido = "Buen dia,\n Se ha creado una nueva convocatoria, para ser publicada se requiere de su aprobacion.
								  \n\nPor favor siga el siguiente enlace para gestionar esta solicitud: http://convocatorias.cid.org.co";
					ini_set('sendmail_from', 'sistemas@cid.org.co');
					mail($para, $asunto, $contenido, $header);
					
				endforeach;
				//Fin del Envio
				
				$this->Session->setFlash(__('La convocatoria ha sido guardada', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('La convocatoria no pudo ser guardada. Intente de nuevo.', true));
			}
		}
		$perfiles = $this->Convocatoria->Perfile->find('list',array('fields'=>array('Perfile.id','Perfile.cargo'),'order'=>'Perfile.cargo ASC'));
		$departamentos = $this->Departamento->find('list',array('fields'=>array('Departamento.id','Departamento.nombre'),'order'=>'Departamento.nombre ASC'));
		$this->set(compact('perfiles','departamentos','municipios'));
	}

	function edit($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}
		
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid convocatoria', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			
			$form = $this->data;
			$departamentos_actuales = ""; $i=1;
			foreach ($form['Convocatoria']['departamentos'] as $departamento):
				$departamentos_actuales.=($i<count($form['Convocatoria']['departamentos']))?$departamento.", ":$departamento;
				$i++;
			endforeach;
			
			$form['Convocatoria']['departamentos'] = $departamentos_actuales;
			if ($this->Convocatoria->save($form)) {
				$this->Session->setFlash(__('La convocatoria ha sido guardada', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('La convocatoria no fue guardada. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Convocatoria->read(null, $id);
		}
		$perfiles = $this->Convocatoria->Perfile->find('list',array('fields'=>array('Perfile.id','Perfile.cargo'),'order'=>'Perfile.cargo ASC'));
		$departamentos_actuales = split(',',$this->data['Convocatoria']['departamentos']);
		$departamentos = $this->Departamento->find('list',array('fields'=>array('Departamento.id','Departamento.nombre'),'order'=>'Departamento.nombre ASC'));
		$this->set(compact('perfiles','departamentos','departamentos_actuales'));
	}

	function delete($id = null) {
		
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'convocatorias','action' => 'publicaciones'));
		}	
		
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for convocatoria', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Convocatoria->delete($id)) {
			$this->Session->setFlash(__('Convocatoria eliminada', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Convocatoria was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
}
?>